// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "net/quic/crypto/quic_random.h"

#include "testing/gtest/include/gtest/gtest.h"

namespace net {
namespace test {

    TEST(QuicRandomTest, RandBytes)
    {
        unsigned char buf1[16];
        unsigned char buf2[16];
        memset(buf1, 0xaf, sizeof(buf1));
        memset(buf2, 0xaf, sizeof(buf2));
        ASSERT_EQ(0, memcmp(buf1, buf2, sizeof(buf1)));

        QuicRandom* rng = QuicRandom::GetInstance();
        rng->RandBytes(buf1, sizeof(buf1));
        EXPECT_NE(0, memcmp(buf1, buf2, sizeof(buf1)));
    }

    TEST(QuicRandomTest, RandUint64)
    {
        QuicRandom* rng = QuicRandom::GetInstance();
        uint64_t value1 = rng->RandUint64();
        uint64_t value2 = rng->RandUint64();
        EXPECT_NE(value1, value2);
    }

    TEST(QuicRandomTest, Reseed)
    {
        char buf[1024];
        memset(buf, 0xaf, sizeof(buf));

        QuicRandom* rng = QuicRandom::GetInstance();
        rng->Reseed(buf, sizeof(buf));
    }

} // namespace test
} // namespace net
